home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 265_01 / wrsct3b1.c < prev   
Text File  |  1990-02-13  |  1KB  |  63 lines

  1. /*    absolute sector write routine    */
  2. /*    ----------------------------    */
  3. /* AT&T 3B1 (UNIX PC, 7300) &         */
  4. /* Convergent Techologies S-50        */
  5. /* version ORG. may have been         */
  6. /*      written by Rainer Gerhards    */
  7. /*             Petronellastr. 6    */
  8. /*             D-5112 Baesweiler    */
  9. /*            West Germany    */
  10. /* MOD. for 3B1 by            */
  11. /*               T. W. (Bill) Kalebaugh    */
  12. /*             Rt 2 Box 3        */
  13. /*             Easton, Kansas    */
  14. /*                66020    */
  15. /*    Tel. # (913) 773-5732        */
  16. /*    ----------------------------    */
  17.  
  18. #include <stdio.h>
  19. #include <sys/gdisk.h>
  20. #include <sys/gdioctl.h>
  21. #include <fcntl.h>
  22.  
  23. static    struct    gdctl    gdbuf;
  24. struct    gdctl    *gddesc = &gdbuf;
  25.  
  26. char    *flpy = "/dev/rfp020";
  27.  
  28.  
  29. #define SECTSIZE    512
  30.  
  31. int wrsct(strtsect, sectbuf)
  32. int strtsect;
  33. char    *sectbuf;
  34. {
  35. static int filopen = 0;
  36. static int fd;
  37. int  i=0;
  38.     
  39.  
  40. if(!filopen)
  41.     fd = open(flpy,O_RDWR);
  42.     if ( fd < 0 ) {
  43.         perror("An error occurred opening floppy drive.\n");
  44.         exit(1);
  45.     }
  46.     else
  47.         filopen = 1;
  48.     gddesc->params.cyls = 40;
  49.     gddesc->params.heads = 2;
  50.     gddesc->params.psectrk = 8;
  51.     gddesc->params.pseccyl = 16;
  52.     gddesc->params.flags = 0;
  53.     gddesc->params.step = 0;
  54.     gddesc->params.sectorsz = 512;
  55.     gddesc->dsktyp = 2;
  56.     if ( ioctl(fd,GDSETA,gddesc) == -1 ) {
  57.     fprintf(stderr, "An error occurred setting the floppy drive.\n");
  58.         exit(1);
  59.     }
  60. lseek(fd, (long) SECTSIZE * strtsect, 0);
  61. return((write(fd, sectbuf, SECTSIZE) == SECTSIZE) ? 0 : 1);
  62. }
  63.